#ifndef MAPAESFERICO_H
#define MAPAESFERICO_H

#include "mapaabstracto.h"
#include "ui_estrellas.h"
#include "ciudad.h"
#include "Mapa.h"

namespace ui {
namespace tablero {
namespace mapa {

class MapaEsferico: public MapaAbstracto {

public:

    MapaEsferico(TexturaDeFondo &p_TexturaDeFondo, Mapa *p_Mapa);
    ~MapaEsferico();

	virtual void moverCamara(mover_camara_e p_eMoverCamara);
	virtual void actualizarPerspectiva(int p_iAncho, int p_iAltura);
	virtual void actualizarCamara();
	virtual void actualizarSeleccion(int p_x, int p_y);

protected:

	virtual void dibujarPlaneta();
	virtual void dibujarCiudades();

private:

	Point3 viewpoint;
	double alpha;
	double beta;
	double dist;
	Estrellas estrellas;

	void createSphere(double r, int n);
	bool cityRayIntersection(const Ciudad& city, Point3 rayStart, Vector3 rayDir);
};

}
}
}

#endif
